﻿//////////////////////////////////////////////////////////////////////////////
//
//  Copyright © 1998-2024 Glodon Company Limited.  All rights reserved.
//
//  Use of this software is subject to the terms of the Glodon license
//  agreement provided at the time of installation or download, or which
//  otherwise accompanies this software in either electronic or hard copy form.  
//
//////////////////////////////////////////////////////////////////////////////


#pragma once

#include "GcmpDevService.h"
#include "IConfigRecord.h"

namespace gcmp
{
    /// \brief  PublishConfig配置记录的名称
    struct GCMP_DEV_SERVICE_EXPORT PublishConfigRecordNames
    {
        static const wchar_t * ConfigFileVersion;           ///< 配置文件版本号
        static const wchar_t * InHouseMode;                 ///< 内部类型
        static const wchar_t * OpenInternalDebugToolset;    ///< 开启内部调试工具集
        static const wchar_t * Language;                    ///< 语言
    };

    /// \brief  管理发版配置文件
    FINAL_INTERFACE class GCMP_DEV_SERVICE_EXPORT IPublishConfig
    {
    public:
        /// \brief 通过配置项名称获取配置项。
        /// \param recordName 配置项名称。
        /// \return 返回配置项，如果不存在，则返回nullptr。
        static const IConfigRecord* GetConfigRecord(const std::wstring& recordName);

        /// \brief 获取配置项的整型值。
        /// \param recordName 配置项名称。
        /// \return 如果存在，则返回其整型值，如果不存在则返回0。
        static int GetConfigRecordValueAsInt(const std::wstring& recordName);

        /// \brief 获取配置项的浮点值。
        /// \param recordName 配置项名称。
        /// \return 如果存在，则返回其浮点值，如果不存在则返回0.0。
        static double GetConfigRecordValueAsDouble(const std::wstring& recordName);

        /// \brief 获取配置项的字符串值。
        /// \param recordName 配置项名称。
        /// \return 如果存在，则返回其字符串值，如果不存在则返回空字符串。
        static std::wstring GetConfigRecordValueAsString(const std::wstring& recordName);
    };
}

